//
//  XLCryptoTool.h
//  XLCryptoTool
//
//  Created by ilongge on 2022/8/16.
//

#import "XLAESUtils.h"
#import "XLSHAUtils.h"

#import <Foundation/Foundation.h>

@interface XLCryptoTool : NSObject
#pragma mark AES
/**
 * AES加密
 * @param encryptKey   加密秘钥
 * @param ivKey        偏移秘钥
 * @param mode         加密模式
 * @param encryptData  需要加密的二进制数据
 */
+ (NSData *)aesEncryptWithKey:(NSString *)encryptKey
                     andIvKey:(NSString *)ivKey
                      andMode:(XL_AES_Crypto_Mode)mode
                      andData:(NSData *)encryptData;

/**
 * AES加密
 * @param encryptKey   加密秘钥
 * @param ivKey        偏移秘钥
 * @param mode         加密模式
 * @param encryptText  需要加密的字符串
 */
+ (NSString *)aesEncryptWithKey:(NSString *)encryptKey
                       andIvKey:(NSString *)ivKey
                        andMode:(XL_AES_Crypto_Mode)mode
                        andText:(NSString *)encryptText;

/**
 * AES解密
 * @param decryptKey   解密秘钥
 * @param ivKey        偏移秘钥
 * @param mode         加密模式
 * @param decryptData  需要解密的二进制数据
 */
+ (NSData *)aesDecryptWithKey:(NSString *)decryptKey
                     andIvKey:(NSString *)ivKey
                      andMode:(XL_AES_Crypto_Mode)mode
                      andData:(NSData *)decryptData;

/**
 * AES解密
 * @param decryptKey   解密秘钥
 * @param ivKey        偏移秘钥
 * @param mode         加密模式
 * @param decryptText  需要解密的字符串
 */
+ (NSString *)aesDecryptWithKey:(NSString *)decryptKey
                       andIvKey:(NSString *)ivKey
                        andMode:(XL_AES_Crypto_Mode)mode
                        andText:(NSString *)decryptText;

#pragma mark SHA
/**
 * SHA加密 sha
 * @param cryptoMode   加密模式
 * @param keyMode      秘钥模式
 * @param encryptKey   加密秘钥
 * @param text         需要加密的字符串
 */
+ (NSString *)shaCryptoWithMode:(XL_SHA_Crypto_Mode)cryptoMode
                     andKeyMode:(XL_SHA_Key_Mode)keyMode
                         andKey:(NSString *)encryptKey
                        andText:(NSString *)text;
@end

